package sg.edu.nus.iss.vmcs.ui.factory;

import sg.edu.nus.iss.vmcs.system.SimulatorControlPanel;
import sg.edu.nus.iss.vmcs.ui.component.BorderLayout;
import sg.edu.nus.iss.vmcs.ui.component.Button;
import sg.edu.nus.iss.vmcs.ui.component.Checkbox;
import sg.edu.nus.iss.vmcs.ui.component.Dialog;
import sg.edu.nus.iss.vmcs.ui.component.Font;
import sg.edu.nus.iss.vmcs.ui.component.GridLayout;
import sg.edu.nus.iss.vmcs.ui.component.Label;
import sg.edu.nus.iss.vmcs.ui.component.Panel;
import sg.edu.nus.iss.vmcs.ui.component.TextField;

public abstract class UIComponentAbstractFactory {

	// Create methods for Label
	public abstract Label createLabel();
	public abstract Label createLabel(String text);
	public abstract Label createLabel(String text, int alignment);
	
	// Create methods for Font
	public abstract Font createFont(String name, int style, int size);
	
	// Create methods for TextField
	public abstract TextField createTextField();
	public abstract TextField createTextField(String text);
	public abstract TextField createTextField(int columns);
	public abstract TextField createTextField(String text, int columns);
	
	// Create methods for Button
	public abstract Button createButton();
	public abstract Button createButton(String label);
	
	// Create methods for Checkbox
	public abstract Checkbox createCheckbox();
	public abstract Checkbox createCheckbox(String label);
	public abstract Checkbox createCheckbox(String label, boolean state);
	
	// Create nethods for Dialog
	public abstract Dialog createDialog(SimulatorControlPanel owner, String title, boolean modal);
	
	// Create methods for Panel
	public abstract Panel createPanel();
	
	// Create methods for BorderLayout
	public abstract BorderLayout createBorderLayout();
	
	// Create methods for GridLayout
	public abstract GridLayout createGridLayout();
	public abstract GridLayout createGridLayout(int arg0, int arg1);
}
